
#include <math.h>
#include "Algebra.h"

using namespace ttg::math;

//-------------------------
//--- QuadraticEquation ---
//-------------------------

int QuadraticEquation::solve(float &x1, float &x2)
{
	if (!isZero(A()))
	{
		float d = B() * B() - 4 * A() * C();
		if (d >= 0.0f)
		{
			d = sqrtf(d);
			x1 = (-B() - d) / (2 * A());
			x2 = (-B() + d) / (2 * A());
			return isZero(d) ? 1 : 2;
		}
		else
			return 0;
	}
	else
	{
		if (isZero(B()))
		{
			x1 = 0.0f;
			return isZero(C()) ? 1 : 0;
		}
		else
		{
			x1 = -C() / B();
			return 1;
		}
	}
}